package com.bw.controller;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.bw.service.FastFoodService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@RestController
public class FastFoodController {
    @Autowired
    FastFoodService fastFoodService;
//  数字翻牌器
    @RequestMapping ("/findTotal")
    public Object findTotal(String t){
//        1.获取数据库的数据
        List<Map> list = fastFoodService.findTotal(t);
        System.out.println(list);

//      2.返回大屏所需要的数据
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status",0);
        jsonObject.put("msg","");
        jsonObject.put("data",list.get(0).get("total"));

        return jsonObject;
    }
// 省份热力图
    @RequestMapping ("/findPro")
    public Object findPro(String t){
//        1.获取数据库的数据
        List<Map> list = fastFoodService.findPro(t);
        System.out.println(list);

//      2.返回大屏所需要的数据
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status",0);
        jsonObject.put("msg","");
//        需要{}
        JSONObject dataObject = new JSONObject();
//      dataObject 需要  mapData,valueName,sizeValueName,typeName,tooltipNames,tooltipUnits
//       mapData 中需要[]
        JSONArray mapArray = new JSONArray();
//        需要多个{}  只能遍历
        for (Map map : list) {
            JSONObject mapObject = new JSONObject();
//       mapObject 需要    name    value  sizeValue type tooltipValues
            mapObject.put("name",map.get("n"));
            mapObject.put("value",map.get("total"));
            mapObject.put("sizeValue",map.get("num"));
            mapObject.put("type",map.get("sum"));
//            需要[]
            JSONArray toolArray = new JSONArray();
            toolArray.add(map.get("t"));
            toolArray.add(map.get("c"));
            mapObject.put("tooltipValues",toolArray);
            mapArray.add(mapObject);
        }
        dataObject.put("mapData",mapArray);
        dataObject.put("valueName","下单金额");
        dataObject.put("sizeValueName","下单次数");
        dataObject.put("typeName","实收金额");
        //   tooltipNames 中需要[]
        JSONArray NamesArray = new JSONArray();
        NamesArray.add("退款金额");
        NamesArray.add("下单人数");
        dataObject.put("tooltipNames",NamesArray);

//    tooltipUnits  中需要[]
        JSONArray UnitsArray = new JSONArray();
        UnitsArray.add("元");
        UnitsArray.add("人");

        dataObject.put("tooltipUnits",UnitsArray);
        jsonObject.put("data",dataObject);
        return jsonObject;
    }
//   折线图
    @RequestMapping("/findHour")
    public Object findHour(String t){
//        1、获取数据库中数据
        List<Map> list = fastFoodService.findHour(t);
        System.out.println(list);

//        2.返回大屏所需要的数据
//      需要 {}
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status",0);
        jsonObject.put("msg","");
//       data中 需要{}
        JSONObject dataObject = new JSONObject();
//        需要 categories [] series []
        JSONArray xArray = new JSONArray();
        for (Map map : list) {
            xArray.add(map.get("h"));
        }
  //     series 需要三个对象
       JSONArray yArray = new JSONArray();
        JSONObject moneyObject = new JSONObject();



//       moneyObject  需要   name data
        moneyObject.put("name","下单金额");
//     data 需要[]
        JSONArray dataArray = new JSONArray();
        for (Map map : list) {
            dataArray.add(map.get("total"));
        }
        moneyObject.put("data",dataArray);


        JSONObject numObject = new JSONObject();

        //       numObject  需要   name data
        numObject.put("name","下单次数");
//     data 需要[]
        JSONArray dataArray1 = new JSONArray();
        for (Map map : list) {
            dataArray1.add(map.get("c"));
        }
        numObject.put("data",dataArray1);



        JSONObject peoObject = new JSONObject();

        //       peoObject  需要   name data
        peoObject.put("name","下单人数");
//     data 需要[]
        JSONArray dataArray2 = new JSONArray();
        for (Map map : list) {
            dataArray2.add(map.get("num"));
        }
        peoObject.put("data",dataArray2);

        yArray.add(moneyObject);
        yArray.add(numObject);
        yArray.add(peoObject);
        dataObject.put("categories",xArray);
        dataObject.put("series",yArray);
        jsonObject.put("data",dataObject);
        return jsonObject;
    }


//    柱状图  折线图和柱状是一样的
   @RequestMapping("/findSpu")
    public Object findSpu(){
//        1.获取数据可的数据
       List<Map> list = fastFoodService.findSpu();
       System.out.println(list);

//       2.返回大屏所需要的数据
       JSONObject jsonObject = new JSONObject();
       jsonObject.put("status",0);
       jsonObject.put("msg","");
       JSONObject dataObject = new JSONObject();
//dataObject 需要categories  series
//    x轴   categories  需要 []
       JSONArray xArray = new JSONArray();
       //       []  需要的是  各菜品的名称  来自于list  多个需要遍历
       for (Map map : list) {
           xArray.add(map.get("name"));
       }
       dataObject.put("categories",xArray);

//     y轴  series  需要 []
       JSONArray yArray = new JSONArray();
//   Y轴  需要4个{}
       JSONObject yObject1 = new JSONObject();

//       yObject1 需要 name，data
       yObject1.put("name","评价次数");
//       data 需要[]
       JSONArray dataArray = new JSONArray();
//        []  需要的是  评价次数 来自于list  多个需要遍历
       for (Map map : list) {
           dataArray.add(map.get("c"));
       }
       yObject1.put("data",dataArray);

       JSONObject yObject2 = new JSONObject();
       //       yObject2 需要 name，data
       yObject2.put("name","好评次数");
//       data 需要[]
       JSONArray dataArray1 = new JSONArray();
//        []  需要的是  评价次数 来自于list  多个需要遍历
       for (Map map : list) {
           dataArray1.add(map.get("hp"));
       }
       yObject2.put("data",dataArray1);



       JSONObject yObject3 = new JSONObject();
       //       yObject2 需要 name，data
       yObject3.put("name","平均评分");
//       data 需要[]
       JSONArray dataArray2 = new JSONArray();
//        []  需要的是  评价次数 来自于list  多个需要遍历
       for (Map map : list) {
           dataArray2.add(map.get("p"));
       }
       yObject3.put("data",dataArray2);


       JSONObject yObject4 = new JSONObject();
       //       yObject2 需要 name，data
       yObject4.put("name","好评率");
//       data 需要[]
       JSONArray dataArray3 = new JSONArray();
//        []  需要的是  评价次数 来自于list  多个需要遍历
       for (Map map : list) {
           dataArray3.add(map.get("lv"));
       }
       yObject4.put("data",dataArray3);
       yArray.add(yObject1);
       yArray.add(yObject2);
       yArray.add(yObject3);
       yArray.add(yObject4);
       dataObject.put("series",yArray);

       jsonObject.put("data",dataObject);

       return jsonObject;
   }





    

}
